package com.xbai.config;

import com.xbai.bean.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;

/**
 * @author xbai
 * @Date 2021/3/26
 */
// 配置类 == 配置文件
@Configuration // 告诉 Spring 这是一个配置类
@ComponentScan(value = "com.xbai", includeFilters = {
      /*  @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Repository.class}),
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {BookController.class}),*/
        @ComponentScan.Filter(type = FilterType.CUSTOM, classes = {MyTypeFilter.class})
}, useDefaultFilters = false)
//@ComponentScan value: 指定要扫描的包
//excludeFilters = Filter[] : 指定扫描的时候按照什么规则排除哪些组件
//includeFilters = Filter[] : 指定扫描的时候只需要包含哪些组件
//FilterType.ANNOTATION：按照注解
//FilterType.ASSIGNABLE_TYPE：按照给定的类型
//FilterType.ASPECTJ：使用ASPECTJ表达式
//FilterType.REGEX：使用正则表达式
//FilterType.CUSTOM：自定义规则
public class MainConfig {

    // 给容器中注册一个 Bean；类型为返回值的类型，id 默认是用方法名作为 id
    @Bean
    public Person person() {
        return new Person("xbai", "20");
    }
}
